package br.com.ecomanda.managedbean;

import br.com.ecomanda.controller.EComandaController;
import br.com.ecomanda.exceptions.BusinessException;
import br.com.ecomanda.model.Comanda;
import br.com.ecomanda.model.Funcionario;
import br.com.ecomanda.util.JSFUtil;

public class ComandaBean {

	private EComandaController parent;

	private Funcionario funcionario;

	private Comanda comanda;

	public ComandaBean() {
		this.parent = (EComandaController) JSFUtil.getFromSession("parent");
		this.funcionario = (Funcionario) JSFUtil.getFromSession("funcionario");
	}

	public void abrirComanda() {
		if(comanda == null){
			JSFUtil.addFacesErrorMessage("Comanda inexistente!");
			return;
		}
		
		try {
			
			parent.getOperacaoComandaController().abrirComanda(comanda,
					funcionario);
			JSFUtil.addFacesInformationMessage("Comanda aberta com sucesso!");
			
		} catch (BusinessException e) {
			JSFUtil.addFacesErrorMessage(e.getMessage());
		}
	}

	public void encerrarComanda() {
		if(comanda == null){
			JSFUtil.addFacesErrorMessage("Comanda inexistente!");
			return;
		}
		
		try {
			
			parent.getOperacaoComandaController().encerrarComanda(comanda,
					funcionario, null);
			JSFUtil.addFacesInformationMessage("Comanda encerrada com sucesso!");
			
		} catch (BusinessException e) {
			JSFUtil.addFacesErrorMessage(e.getMessage());
		} 
	}

	public void consultarComanda() {
		if(comanda == null){
			JSFUtil.addFacesErrorMessage("Comanda inexistente!");
			return;
		}
		
		try {
			
			if (parent.getOperacaoComandaController().getOperacaoAberta(
					comanda) != null)
				JSFUtil.addFacesInformationMessage("Comanda ABERTA!");
			else
				JSFUtil.addFacesInformationMessage("Comanda ENCERRADA!");
			
		} catch (BusinessException e) {
			JSFUtil.addFacesErrorMessage(e.getMessage());
		}
	}

	public Comanda getComanda() {
		return comanda;
	}

	public void setComanda(Comanda comanda) {
		this.comanda = comanda;
	}

}
